home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / R-Shows / (c)sdg.d64 / fast tools plus (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  18KB  |  280 lines

  1. 0 REM - WON'T WORK WITH BUSCARD 'ON'
  2. 1 GOTO 500
  3. 10 REM :::::: ZAP!
  4. 11 A=256: B=2049: C=1003
  5. 12 IF PEEK(B+2) +A*PEEK(B+3)>=C THEN 15
  6. 13 B=PEEK(B)+A*PEEK(B+1): ON ABS(B<>0) GOTO 12:END
  7. 14 A=256:B=PEEK(251)+A*PEEK(252)
  8. 15 IF PEEK(B+1)=0 THEN END
  9. 16 PRINT CHR$(147)PEEK (B+2)+A*PEEK(B+3):PRINT "GOTO 14"
  10. 17 POKE 251,B-INT(B/A)*A:POKE 252,B/A
  11. 18 POKE 631,19:POKE632,13:POKE633,13:POKE198,3:END
  12. 20 REM ... GRAPHICS
  13. 21 POKE 53265,59
  14. 22 POKE 53272,29
  15. 23 POKE 56576,198
  16. 24 RETURN
  17. 30 REM ... TEXT
  18. 31 POKE 53265,27
  19. 32 POKE 53272,21
  20. 33 POKE 56576,199
  21. 34 RETURN
  22. 40 REM :::: COLOURS
  23. 41 SYS 49165,C
  24. 44 RETURN
  25. 50 REM ::::::: PAINT BACKGROUND
  26. 51 SYS 49157
  27. 54 RETURN
  28. 60 REM ::::::: FIND A POINT
  29. 61 ROW = INT(Y/8)
  30. 62 COL = INT(X/8)
  31. 63 LINE = Y AND 7
  32. 64 BIT = 7-(XAND7)
  33. 65 BYTE = 24576 + ROW*320 + COL*8 + LINE
  34. 66 CBYTE = 17408 + ROW * 40 + COL
  35. 67 RETURN
  36. 70 REM ::::::: PLOT A POINT
  37. 71 SYS 49321,X,Y,C
  38. 74 RETURN
  39. 80 REM :::::  PLOT A LINE
  40. 81 SYS 49321,X1,Y1 TO X2,Y2,C
  41. 89 RETURN
  42. 90 REM  :::::  PAINT A SHAPE
  43. 91 SYS 49551,X0,Y0,W,H,C,PC
  44. 99 RETURN
  45. 100 REM  :::::  SAVE PICTURE
  46. 101 INPUT "ENTER FILE NAME";FILE$
  47. 102 INPUT "ENTER 8 FOR DISK, OR 1 FOR CASSETTE"; DE
  48. 103 SYS 57812 FILE$ + ".PIC", DE
  49. 104 POKE 174,64:POKE 175,127:POKE 193,0:POKE 194,96
  50. 105 SYS 62954
  51. 106 SYS 57812 FILE$ + ".COL", DE
  52. 107 POKE 174,232: POKE 175,71: POKE193,0: POKE 194,68
  53. 108 SYS 62954: END
  54. 110 REM ::::: DRAW A SHAPE
  55. 111 FOR J = 0 TO NL
  56. 112 E1 = L%(0,J): E2 = L%(1,J)
  57. 113 X1 = E%(0,E1) + X0: Y1 = E%(1,E1) + Y0
  58. 114 X2 = E%(0,E2) + X0: Y2 = E%(1,E2) + Y0
  59. 115 GOSUB 80
  60. 116 NEXT J
  61. 117 RETURN
  62. 120 REM  :::::  DEFINE SPRITE SP
  63. 121 FOR I = 0 TO 62
  64. 122 READ A
  65. 123 POKE 16384 + 64*SP+I,A
  66. 124 NEXT I
  67. 125 POKE 18424 + SP,SP
  68. 126 RETURN
  69. 130 REM ::::: TURN ON SPRITE SP
  70. 131 POKE 53269, PEEK(53269)OR 2^SP
  71. 132 RETURN
  72. 140 REM ::::: TURN OFF SPRITE SP
  73. 141 POKE 53269,PEEK(53269)AND(255-2^SP)
  74. 142 RETURN
  75. 150 REM ::::: X EXPAND SPRITE SP
  76. 151 POKE 53277,PEEK(53277)OR2^SP
  77. 152 RETURN
  78. 160 REM ::::: X UNEXPAND SPRITE SP
  79. 161 POKE 53277,PEEK(53277)AND(255-2^SP)
  80. 170 REM ::::: Y EXPAND SPRITE SP
  81. 171 POKE 53271,PEEK(53271)OR 2^SP
  82. 172 RETURN
  83. 180 REM ::::: Y UNEXPAND SPRITE SP
  84. 181 POKE 53271,PEEK(53271)AND(255-2^SP)
  85. 182 RETURN
  86. 190 REM :: SPRITE SP PRIORITY OVER SHAPE
  87. 191 POKE 53275,PEEK(53275)AND(255-2^SP)
  88. 192 RETURN
  89. 200 REM :: SHAPE PRIORITY OVER SPRITE SP
  90. 201 POKE 53275,PEEK(53275)OR 2^SP
  91. 202 RETURN
  92. 210 REM ::: SET SPRITE SP TO COLOUR C
  93. 211 POKE 53287 + SP,C
  94. 212 RETURN
  95. 220 REM :: PLACE SPRITE SP AT X,Y
  96. 221 XX=X+24:YY=Y+50:Z%=XX/256
  97. 222 V=XX-Z%*256:W=53248+SP*2
  98. 223 WW=53264
  99. 224 PR=ABS((PEEK(WW)AND 2^SP)<>0)
  100. 225 VV=PEEK(WW)AND(255-2^SP)OR(2^SP*Z%)
  101. 226 IF PR<>Z%THEN GOSUB140
  102. 227 POKE W,V:POKEWW,VV: GOSUB 130
  103. 228 POKE 53249+SP*2,YY
  104. 229 RETURN
  105. 240 REM ::: DRAW A RECTANGLE
  106. 241 X1=X0+W:Y1=Y0
  107. 242 X2=X0:Y2=Y0:GOSUB 80
  108. 243 X1=X0:Y1=Y0+H:GOSUB80
  109. 244 X2=X0+W:Y2=Y0+H:GOSUB 80
  110. 245 X1=X0+W:Y1=Y0:GOSUB 80
  111. 246 RETURN
  112. 250 REM ::: DRAW/PAINT RECTANGLE
  113. 251 GOSUB 240
  114. 252 GOTO 90
  115. 260 REM ::: DRAW A POLYGON
  116. 261 K=2*(null)/T-.0001
  117. 262 FOR J = 0 TO 2*(null)STEPK
  118. 263 W=R*SIN(J)*1.2345
  119. 264 H=R*COS(J)*SC
  120. 265 IF J=0 THEN X1=X0+W:Y1=Y0+H
  121. 266 X2=X0+W:Y2=Y0+H:GOSUB80
  122. 267 X1=X2:Y1=Y2
  123. 268 NEXT J
  124. 269 RETURN
  125. 270 REM ::: DRAW/PAINT POLYGON
  126. 271 GOSUB 260
  127. 272 X0=X0-R*1.2345
  128. 273 Y0=Y0-R*SC
  129. 274 H=R*2*SC
  130. 275 W=R*2*1.2345
  131. 276 GOTO 90
  132. 280 REM ::: DRAW A CIRCLE
  133. 281 T=30
  134. 282 GOTO 260
  135. 290 REM ::: PRINT PICTURE
  136. 291 OPEN 1,4:BA=24888
  137. 292 A$=CHR$(15)+CHR$(16)+"20"+CHR$(8)
  138. 293 FORJ=0TO44:IF(JAND7)>0THENBA=BA-8
  139. 294 BY=BA:PRINT#1,A$;
  140. 295 B1%=JAND7:B2%=8-B1%:FORK=0TO199
  141. 296 T=PEEK(BY)*2^B1%AND127
  142. 297 B=INT(PEEK(BY+8)/2^B2%)
  143. 298 PRINT#1,CHR$(128+T+B);
  144. 299 BY=BY+1:IF(KAND7)=7THEN BY=BY+312
  145. 300 NEXTK:PRINT#1:NEXTJ:CLOSE1
  146. 500 FOR I = 49152 TO 49189
  147. 501 READ A: POKE I,A: T=T+A
  148. 502 NEXT I
  149. 503 IF T<>5205 THEN PRINT"ERROR IN 500-516":STOP
  150. 504 T=0
  151. 510 REM ::::: CLEAR AND PAINT
  152. 511 DATA 134, 32,  0,  0,  0,169,  0
  153. 512 DATA 160, 96,162, 32,208,  8, 32
  154. 513 DATA 241,183,138,160, 68,162,  4
  155. 514 DATA 132,252,160,  0,132,251,145
  156. 515 DATA 251,200,208,251,230,252,202
  157. 516 DATA 208,246, 96
  158. 520 FOR I = 49190 TO 49263
  159. 521 READ A: POKE I,A: T=T+A
  160. 522 NEXT I
  161. 523 IF T<>8819 THEN PRINT"ERROR IN 520-541":STOP
  162. 524 T=0
  163. 530 REM :::: FIND A POINT
  164. 531 DATA 173, 62,  3, 72, 41,248,168
  165. 532 DATA  32,162,179,169,  0,160,192
  166. 533 DATA  32, 40,186, 32,247,183, 24
  167. 534 DATA 173, 60,  3, 72, 41,248,101
  168. 535 DATA  20,133,251,133,253,173, 61
  169. 536 DATA   3,101, 21, 72, 74,102,253
  170. 537 DATA  74,102,253, 74,102,253, 24
  171. 538 DATA 105, 68,133,254,104,105, 96
  172. 539 DATA 133,252,104, 41,  7,170,104
  173. 540 DATA  41,  7,101,251,144,  2,230
  174. 541 DATA 252,133,251, 96
  175. 550 FOR I = 49264 TO 49367
  176. 551 READ A: POKE I,A: T=T+A
  177. 552 NEXT I
  178. 553 IF T<>10943 THEN PRINT"ERROR IN 550-575":STOP
  179. 554 T=0
  180. 560 REM :::: MISC. ROUTINES
  181. 561 DATA 162, 64, 44,162, 69, 44,162
  182. 562 DATA  74, 44,162, 79, 44,162, 84
  183. 563 DATA 160,  3, 76,212,187,169, 64
  184. 564 DATA  44,169, 69, 44,169, 84,160
  185. 565 DATA   3, 76,162,187, 32,124,192
  186. 566 DATA  32,247,183,166, 20,164, 21
  187. 567 DATA 142, 89,  3,140, 90,  3, 96
  188. 568 DATA 128, 64, 32, 16,  8,  4,  2
  189. 569 DATA   1, 32,253,174, 32,235,183
  190. 570 DATA 142, 62,  3,166, 20,164, 21
  191. 571 DATA 142, 60,  3,140, 61,  3,201
  192. 572 DATA 164,240, 24, 32,241,183,142
  193. 573 DATA  63,  3, 32, 38,192,160,  0
  194. 574 DATA 177,251, 29,161,192,145,251
  195. 575 DATA 173, 63,  3,145,253, 96
  196. 580 FOR I = 49368 TO 49444
  197. 581 READ A: POKE I,A: T=T+A
  198. 582 NEXT I
  199. 583 IF T<>7925 THEN PRINT"ERROR IN 580-601":STOP
  200. 584 T=0
  201. 590 REM :::: PLOT PART 1
  202. 591 DATA  32,115,  0, 32,138,173, 32
  203. 592 DATA  15,188,172, 60,  3,173, 61
  204. 593 DATA   3, 32,145,179, 32,112,192
  205. 594 DATA  32, 83,184, 32,118,192, 70
  206. 595 DATA 102, 32,144,192, 32,241,183
  207. 596 DATA 138,168, 32,162,179, 32, 15
  208. 597 DATA 188,172, 62,  3, 32,162,179
  209. 598 DATA  32,115,192, 32, 83,184, 32
  210. 599 DATA 121,192, 70,102,169, 84,160
  211. 600 DATA   3, 32, 91,188, 48, 11, 32
  212. 601 DATA  43,188,208,  3, 76,192,192
  213. 610 FOR I = 49445 TO 49550
  214. 611 READ A: POKE I,A: T=T+A
  215. 612 NEXT I
  216. 613 IF T<>11077THEN PRINT"ERROR IN 610-636":STOP
  217. 614 T=0
  218. 620 REM :::: PLOT PART 2
  219. 621 DATA  32,144,192, 32,137,192,169
  220. 622 DATA  74,160,  3, 32, 15,187, 32
  221. 623 DATA 118,192, 32,137,192,169, 79
  222. 624 DATA 160,  3, 32, 15,187, 32,121
  223. 625 DATA 192, 32,241,183,142, 63,  3
  224. 626 DATA  32,198,192, 32,131,192,169
  225. 627 DATA  74,160,  3, 32,103,184, 32
  226. 628 DATA  43,188, 48, 52, 32,112,192
  227. 629 DATA  32,247,183,165, 20,166, 21
  228. 630 DATA 141, 60,  3,142, 61,  3, 32
  229. 631 DATA 134,192,169, 79,160,  3, 32
  230. 632 DATA 103,184, 32, 43,188, 48, 21
  231. 633 DATA  32,115,192, 32,247,183,165
  232. 634 DATA  20,141, 62,  3,206, 89,  3
  233. 635 DATA 208,191,206, 90,  3, 16,186
  234. 636 DATA  96
  235. 640 FOR I=49551 TO 49658
  236. 641 READ A: POKE I,A: T=T+A
  237. 642 NEXT I
  238. 643 IF T<>9829 THEN PRINT"ERROR IN 640-666":STOP
  239. 644 T=0
  240. 650 REM :::: PAINT A SHAPE PART 1
  241. 651 DATA  32, 89,194,141, 60,  3,140
  242. 652 DATA  61,  3,142, 66,  3, 32, 89
  243. 653 DATA 194,141, 64,  3,140, 65,  3
  244. 654 DATA 142, 67,  3, 32,241,183,142
  245. 655 DATA  63,  3, 32,253,174, 32,138
  246. 656 DATA 173, 32,118,192,169,  0,141
  247. 657 DATA  72,  3,141, 73,  3,173, 66
  248. 658 DATA   3,141, 69,  3,173, 67,  3
  249. 659 DATA 141, 68,  3,173, 69,  3,141
  250. 660 DATA  62,  3, 32, 38,192,160,  0
  251. 661 DATA 177,251, 61,161,192,208, 52
  252. 662 DATA 173, 73,  3,240, 34,169,  0
  253. 663 DATA 141, 73,  3,173, 72,  3,208
  254. 664 DATA  16,173, 69,  3,141, 70,  3
  255. 665 DATA 169,  1,141, 71,  3,141, 72
  256. 666 DATA   3,208,  8
  257. 670 FOR I=49659 TO 49763
  258. 671 READ A: POKE I,A: T=T+A
  259. 672 NEXT I
  260. 673 IF T<>11207THEN PRINT"ERROR IN 670-695":STOP
  261. 680 REM :::: PAINT A SHAPE PART 2
  262. 681 DATA  32, 59,194,169,  0,141, 72
  263. 682 DATA   3,238, 69,  3,238, 71,  3
  264. 683 DATA 206, 68,  3,208,188,240, 21
  265. 684 DATA 169,  1,141, 73,  3,238, 69
  266. 685 DATA   3,206, 68,  3,208,173,173
  267. 686 DATA  72,  3,240,  3, 32, 59,194
  268. 687 DATA 238, 60,  3,208,  3,238, 61
  269. 688 DATA   3,206, 64,  3,208,132,206
  270. 689 DATA  65,  3, 48,  3, 76,182,193
  271. 690 DATA  96,173, 70,  3,141, 62,  3
  272. 691 DATA  32,190,224,169, 74,160,  3
  273. 692 DATA  32, 91,188, 16,  3, 32,198
  274. 693 DATA 192,238, 62,  3,206, 71,  3
  275. 694 DATA 208,233, 96, 32,253,174, 32
  276. 695 DATA 235,183,165, 20,164, 21, 96
  277. 1000 REM :::::
  278. 1001 REM   MAIN ROUTINE
  279. 1002 REM :::::
  280.